import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import aima.*;

public class BKE {
	private static Bord bord;
	private static Speler p1;
	private static Speler p2;
	private static String print;
	
	static public String readString(String tekst) {
	        System.out.print(tekst);
	        String antw = null;
	        try {
	            BufferedReader in = 
	                new BufferedReader(new InputStreamReader(System.in));            
	            antw = in.readLine();
	        } catch (IOException e) {
	        }

	        return (antw == null) ? "" : antw;
	    }
	 
	public static void main(String args[]) {
		 if (args.length == 2) {
	            System.out.println("Boter-Kaas-Eieren");
	            System.out.println("-----------------");

	            p1 = new MenselijkeSpeler(args[0]);
	            p2 = new MenselijkeSpeler(args[1]);
	        }
		
		 if (args.length > 2) {
			 System.out.println(args[0] + " " + args[1] + " " + args [2] + args[3]);
			 // args eerste speler
			 if(args[2].equals("-R")) {
				 p1 = new RandomSpeler("RandomSpeler 1");
				 System.out.println("Player 1 is een random speler");
			 }
			 else {
				System.out.println(args[2]);
			 }
			 if(args[2].equals("-H")) {
				 p1 = new MenselijkeSpeler(args[0]);
				 System.out.println("Player 1 is een menselijke speler");

			 }
			 if(args[2].equals("-M")) {
				 p1 = new MinMaxSpeler(args[0]);
				 System.out.println("Player 1 is een minmax speler");

			 }
			
			 // args tweede speler
			 if(args[3].equals("-R")) {
				 p2 = new RandomSpeler("RandomSpeler 2");
				 System.out.println("Player 2 is een random speler");

			 }
			 if(args[3].equals("-H")) {
				 p2 = new MenselijkeSpeler(args[1]);
				 System.out.println("Player 2 is een menselijke speler");

			 }
			 if(args[3].equals("-M")) {
				 p2 = new MinMaxSpeler(args[1]);
				 System.out.println("Player 2 is een minmax speler");

			 }
		 }
	     else {
	    	 System.out.println("usage: BKE <name1> <name2>");
		 }
		bord = new Bord(p1,p2);
		//Speler actieveSpeler = p1;
		while(bord.checkVictory() == null && !bord.isFull()) {
			System.out.println(bord.toString());
			System.out.println("Speler " + bord.getPlayer().getNaam() + " is aan de beurt.\r\n");
			bord.getPlayer().doeZet(bord);
//			Speler next = null;
			print = bord.toString();
			//if(actieveSpeler == p1) { next = p2; }
			//if(actieveSpeler == p2) { next = p1; }
			//actieveSpeler = next;

			//actieveSpeler = (actieveSpeler.equals(p1) ? p2 : p1);
		}
				
		System.out.println("Spel afgelopen:\r\n");
		System.out.println(print);
		if(bord.checkVictory() == null) {
			System.out.println("Geen winnaar:\r\n");		
		}
		else {
			System.out.println("De winnaar is: " + bord.checkVictory().getNaam());
		}
	}	

}

